home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / c1.zip / SYSINT.ASM < prev    next >
Assembly Source File  |  1987-06-18  |  2KB  |  66 lines

  1.  
  2.  
  3. page 66,132
  4. ;+
  5. ;       .title sysint
  6. ; index  system interrupt call function   sysint()
  7. ;
  8. ; Usage
  9. ;       sysint(inum,&inreg,&outreg);
  10. ;
  11. ; in
  12. ;       int     inum;           ; interrupt number to execute
  13. ;       int     inreg[4];       ; input registers ax,bx,cx,dx
  14. ;
  15. ; out
  16. ;       int     outreg[4];      ; registers returned ax,bx,cx,dx
  17. ;
  18. ; Description
  19. ;       This is a system interface call to allow system intrinsic functions
  20. ;      to be called from C. Parameters are passed via the register values
  21. ;      stored in inreg for input to the system call and returned in the
  22. ;      outreg struct. The default values for the segment registers are the
  23. ;      same as C routines.
  24. ;
  25. ; status
  26. ;       ax register is returned as status
  27. ;
  28. ; bugs
  29. ;       low level internal routine must be modified to be ported.
  30. ;
  31. ; Updates
  32. ;
  33. ;       date            vers    who     description
  34. ;       15-aug-83       0001    EJK     Added documemtation
  35. ;-
  36. pgroup  group   prog
  37. prog    segment byte    public 'prog'
  38.         assume  cs:pgroup
  39.         public  sysint
  40.  
  41. sysint  proc    near
  42.         push bp         ;save bp
  43.         mov bp,sp       ;sp->bp
  44.         mov ax,[bp]+4   ;get int#
  45.         mov cs:itm+1,al ;set int#
  46.         mov si,[bp]+6   ;in struc
  47.         mov ax,[si]     ;set ax
  48.         mov bx,[si]+2   ;set bx
  49.         mov cx,[si]+4   ;set cx
  50.         mov dx,[si]+6   ;set dx
  51.         push bp         ;save bp2
  52. itm     equ  this byte  ; 'this byte' is a keyword.
  53.         int 16          ;interrupt
  54.         pop bp          ;restore bp2
  55.         mov si,[bp]+8   ;out struc
  56.         mov [si],ax     ;ret ax
  57.         mov [si]+2,bx   ;ret bx
  58.         mov [si]+4,cx   ;ret cx
  59.         mov [si]+6,dx   ;ret dx
  60.         pop bp          ;restore bp
  61.         ret             ;return
  62. sysint  endp
  63. prog    ends
  64.         end
  65.  
  66.